#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
int main()
{
    printf("main进程(%d)开始执行\n", getpid());
    // 创建子进程,失败返回一次，成功返回两次
    // fork根据当前进程创建一个子进程，先后选择父进程和子进程向下执行
    // 返回值为0,选择的是子进程执行，返回值为子进程的pid,选择的是父进程执行
    pid_t pid = fork();
    // printf("fork之后\n");
    if (pid < 0) // 创建进程失败
    {
        printf("创建进程失败\n");
        return -1;
    }
    else if (pid == 0) // 子进程
    {
        printf("子进程(%d)开始执行,父进程id=%d\n", getpid(), getppid());
        // printf("子进程(%d)结束执行\n",getpid());
    }
    else // 父(main)进程
    {
        printf("父进程(%d)开始执行,子进程id=%d\n", getpid(), pid);
        // printf("父进程(%d)结束执行\n",getpid());
    }
    printf("进程(%d)即将结束\n", getpid());
    return 0;
}